package com.easyclearance.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.easyclearance.entity.EnumTravel;
import com.easyclearance.entity.LeaderInfo;
import com.easyclearance.entity.Leadercode;
import com.easyclearance.entity.Malaysiatravinfo;
import com.easyclearance.entity.PassportInfo;
import com.easyclearance.entity.SingaporeTravInfo;
import com.easyclearance.entity.ThailandTravInfo;
import com.easyclearance.entity.TravbaoOrder;
import com.github.pagehelper.PageInfo;

public interface TravInfoService {
	
	//获取领队信息
	public Map<String, Object>  getLeaderInfo(Map<String, Object>paramaMap);
	//通过四位吗获取对应的旅行信息
	public Map<String, Object> createOrderInfo(Map<String, Object> paraMap);
	public Map<String, Object> createOrderInfoPublicMethod(Map<String, Object> paraMap,String code,String userId);
	//获取订单列表
	public Map<String, Object> getOrderlist(Map<String, Object> paraMap);
	//获取订单列表
	public Map<String, Object> getOrderBaseInfo(Map<String, Object> paraMap);
	//添加旅行信息
	public Map<String, Object> createTravInfo(Map<String, Object> paraMap);
	//添加泰国信息
	public ThailandTravInfo createThailandTravInfo(JSONObject paraMap,String id,Integer row);
	//添加马来西亚信息
	public Malaysiatravinfo createMalaysiatravinfo(JSONObject paraMap,String id,Integer row);
	//添加新加坡信息
	public SingaporeTravInfo createSingaporeTravInfo(JSONObject paraMap,String id,Integer row);
	//添加旅行信息
	public Leadercode createLeadCodeInfo(String tlId,String countryCode);
	//添加领队信息
	public LeaderInfo createLeaderInfo(Map<String, Object> paraMap);
	//添加返回码信息
	public Map<String, Object> addTraInfocode(Map<String, Object> paraMap);
	//重新提交
	public Map<String, Object> submitAgain(Map<String, Object> paraMap);
	//获取团组码下的所有人护照信息
	public Map<String, Object> getPassportInfoByGroupCode(Map<String, Object> paraMap);
	//獲取團組碼對應的行程信息
	public Map<String, Object> getTravelInfoByGroupCode(Map<String, Object> paraMap);
	//修改護照信息
	public List<PassportInfo> updatePassportInfo(JSONArray jsonObject);
	//修改行程信息
	public Malaysiatravinfo updateMalaTravelInfo(Map<String, Object>paraMap);
	public SingaporeTravInfo updateSingTravelInfo(Map<String, Object>paraMap);
	public ThailandTravInfo updateThailandTravInfo(Map<String, Object>paraMap);
	//循环获取邮箱内容
	public void loopAcquisitionMailContent(Integer total);
	//获取领队信息列表
	public PageInfo<LeaderInfo> getLeaderInfoList(Map<String, Object>paraMap);
	//获取枚举类型
	public List<EnumTravel> getEnumTravelList(Map<String, Object>paraMap);
	//获取订单数据
	public Map<String, Object> getRecentOrders(Map<String, Object>paraMap);
	//获取订单数据
	public Map<String, Object> loginInfo(Map<String, Object>paraMap);
	//获取价格信息
	public Map<String, Object> getCountryPriceInfo(Map<String, Object>paraMap);
	//获取形成列表
	public Map<String, Object> getTravelInfoList(Map<String, Object>paraMap);
	//不用支付修改订单状态
	public void updateOrderInfoStatus(String orderId);
	//一周之前的订单过滤删除
	public void updateOrderStatusInfo();
	//发送行程信息
	public Map<String, Object> submitInformationtoMalaysia(Map<String, Object> paramMap);
	//转换信息
	@SuppressWarnings("rawtypes")
	public Map convertPassportSubmitInfo(PassportInfo passportInfo, String countryCode);
	public Map<String, Object> convertMalaysiaTravelSubmitInfo(Malaysiatravinfo malaysiatravinfo);
	public Map<String, String> convertSingaporeTravelSubmitInfo(SingaporeTravInfo singaporeTravInfo);
	public Map<String, Object> convertThailandTravelSubmitInfo(PassportInfo passportInfo,ThailandTravInfo thailandTravInfo);
	//上传文件
	public List<PassportInfo> uploadExcelFile(MultipartFile file);
	//map转换成护照对象
	public PassportInfo mapconverPassportInfo(Map<String, Object> map);
	//获取领队信息列表
	public PageInfo<LeaderInfo> getPageLeaderInfo(Map<String, Object> map);
	//个人重发马来西亚
	public Map<String, Object> submitInforForPerson(Map<String, Object> paramMap);
	//获取价格金额
	public BigDecimal getTravelPriceInfo(String priceInfoId);
	//写入关系表
	public void writeIdnumber(String pins, String pinUrl,String otpId,Malaysiatravinfo malaysiatravinfo,SingaporeTravInfo singaporeTravInfo,ThailandTravInfo thailandTravInfo);
	//查询出国宝的相关订单是否已经写入
	public boolean istherearelatedorder(String trav_id,String passport_num,String entry_date);
	//插入出国宝订单数据
	public void insertTravbaoOrder(TravbaoOrder travbaoOrder);
	//获取未执行的订单数据 发出申请
	public void initialSingaporeRequest();
	//获取团队的旅行信息
	public Map<String, Object> selectTravelitineraryInfo(String travId);
	//重新计算价格
	public void reCalculPrice(String titid);
}
